<!doctype html>
<html lang="en">

<head>
	<meta charset="UTF-8">
	<meta name="viewport"
	      content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
	<meta http-equiv="X-UA-Compatible" content="ie=edge">

	<title>Ping Pong</title>

	<style>
		@font-face {
			font-family: 'Press Start 2P';
			font-style: normal;
			font-weight: 400;
			src: url(data:font/woff2;base64,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) format('woff2');
			unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
		}
	</style>

	<style>
		body {
			margin: 0;
			padding: 0;
			height: 100%;
			width: 100%;
			display: flex;
			flex-direction: column;
			font-family: 'Press Start 2P', Arial, sans-serif;
			overflow: hidden;
			background-color: black;
		}

		header {
			display: flex;
			flex-direction: row;
			justify-content: space-between;
			width: 100%;
			margin: 2rem auto;
			color: white;
		}

		.heading {
			font-size: 4rem;
			margin: 0;
		}

		.player-area {
			display: flex;
			flex-direction: row;
			align-items: center;
		}

		.player-area h2 {
			font-size: 1rem;
		}

		.player-area strong {
			font-size: 2rem;
			margin-left: 1rem
		}

		.right-player {
			padding-right: 2rem;
		}

		.left-player {
			padding-left: 2rem;
		}

		.separator {
			width: 100%;
			margin: 10px 0 0 0;
		}

		.player-left-paddle {
			position: absolute;
			left: 0;
			top: calc(50% + 85px);
			width: 12px;
			height: 85px;
			background-color: white;
		}

		.player-right-paddle {
			position: absolute;
			right: 0;
			top: calc(50% + 85px);
			width: 12px;
			height: 85px;
			background-color: white;
		}

		.ping-pong-ball {
			position: absolute;
			left: 50%;
			top: 50%;
			width: 15px;
			height: 15px;
			background-color: white;
			margin-top: -12.5px;
			margin-left: -12.5px;
		}

		.arena {
			border: 3px dashed white;
			width: 900px;
			height: 600px;
			background-color: black;
			position: fixed;
			top: 50%;
			left: 50%;
			z-index: 9;
			transform: translate(-50%, -50%);
		}

		.modal {
			position: fixed;
			display: flex;
			width: 100%;
			height: 100%;
			background-color: rgba(255, 255, 255, 0.4);
			z-index: 10;
			align-items: center;
			justify-content: center;
		}

		.modal-content {
			width: 450px;
			height: 300px;
			background-color: #000;
			color: white;
			display: flex;
			align-items: center;
			justify-content: center;
			flex-direction: column;
		}

		.start-game-container {
			display: flex;
		}

		.start-game-container p {
			font-size: 0.68rem;

		}

		.end-game-container {
			display: flex;
			flex-direction: column;
			align-items: center;
			align-content: center;
		}

		.end-game-container p {
			font-size: 1.5rem;
			margin-bottom: 4rem;
		}

		.end-game-container button {
			min-height: 3rem;
		}

		.hide {
			display: none;
		}

		.btn {
			background-color: black;
			border: 1px white solid;
			color: white;
			cursor: pointer;
		}

		.btn:hover {
			background-color: white;
			border: 1px black solid;
			color: black;
		}

		.legend-container {
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: center;
			position: fixed;
			left: 0;
			bottom: 0;
			width: 100%;
			height: 150px;
			background-color: rgba(255, 255, 255, 0.3);
			font-size: 0.68rem;
		}

		.legend-container section {
			display: flex;
			flex-direction: row;
		}

		.legend-container section article {
			flex-direction: row;
		}

		.legend-container section article:last-child {
			margin-left: 3rem;
		}

		.legend-container p {
			display: inline-block;
			margin-left: 10px;
			margin-bottom: 0;
		}

		.legend-container > p:first-child {
			font-size: 1rem;
			font-weight: 600;
		}

		.legend-container p:first-child {
			display: block;
		}

		@media screen and (max-height: 850px) {
			.legend-container {
				flex-direction: row;
				height: 50px;
			}

			header {
				margin: 0.5rem auto 0.2rem;
			}

			.player-area h2 {
				font-size: 0.5rem;
			}

			.player-area strong {
				font-size: 1.3rem;
			}

			.heading {
				font-size: 2rem;
			}

			.separator {
				margin: 5px 0 0 0;
			}
		}
	</style>
</head>

<body>
<header>
	<article class="player-area left-player">
		<h2>Player 1: </h2>

		<strong id="score1">0</strong>
	</article>

	<h1 class="heading">Ping Pong</h1>

	<article class="player-area right-player">
		<h2>Player 2: </h2>

		<strong id="score2">0</strong>
	</article>
</header>

<hr class="separator">

<main class="arena">
	<section id="paddle1" class="player-left-paddle">
	</section>

	<section id="ball" class="ping-pong-ball">
	</section>

	<section id="paddle2" class="player-right-paddle">
	</section>
</main>

<section id="modal" class="modal">
	<div class="modal-content">
		<div id="startGameContainer" class="start-game-container">
			<p></p>
		</div>

		<div id="endGameContainer" class="end-game-container">
			<p id="winnerParagraph"></p>

			<button id="restart" class="btn">Restart Game</button>
		</div>
	</div>
</section>

<section class="legend-container">
	<p>Legend</p>

	<section>
		<article>
			<p>Player 1 Movements: <strong>W & S</strong></p>
		</article>
		<article>
			<p>Player 2 Movements: <strong>↑ & ↓</strong></p>
		</article>
	</section>

	<p>Player 1 auto play: <strong>C</strong></p>
	<p>Player 2 auto play: <strong>V</strong></p>
	<p>Refresh Page: <strong>R</strong></p>
</section>

<script>
	const AUDIOS = {
		scoreAudio: 'data:audio/mpeg;base64,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',
		wallBounceAudio: 'data:audio/mpeg;base64,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',
		paddleBounceAudio: 'data:audio/mpeg;base64,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/wFkAioCOQJKAhsCPwJQAlcCLQJXAi0C/gETAh4CFgIWAigCCwI2AigCKAI6AhkCLwJDAk4CAgI8Ai0CFAIRAgkCIgIeAkICPwI0AjoCKQIeAigCCAITAgQCCwIIAg4CGQIZAicCHQIDAgMCDQI5AiMC8wHiAQYC/gEQAiICFwIQAiUCHQITAjAC/gH5ASgCRQL9AR0C/AEkAjkCFQIkAjICKgIKAjUCGwIUAkwCGwIIAjACBAL6AQwCBQIZAg8CFwL5AQcC9QHqAecB3wH1AQAC+AECAhQCEAICAsUB8AEbAhcCAgI0AugBEwIdAhMCDwIBAgsC+AH8AQgC9QH4AScCIwIkAg4C+wEKAgoCKgIKAvQBGAL3AfYBGwLbAdYB3QHZAeUB6wEBAgwC/QELAhwCxgEOAg4CDgL1AfwBHAJbAkYCQwIxAjACIgLyASICLAIlAhYCAQIBAvUB9QEHAugBDgIWAiMCKAIHAgIC9AEQAgYC+wEcAh8CEQLlARMCCALsAQkCIgIFAgUCGgL5ARkC0QH5AQACAAL/AeIBAwIAAs0B5gHwAeUB/gHUAd4B9wHiAfcB4AHWAeAB0gHjAQECzgHgARUC3wH4AdwBEQLVAc0B7gHJAfQB2gHTAeUB5QHvAQIC4QHwAdIB5AHzAQwC3QHWAc0BrgHOAdwB2AHmAe0B3AHiAewB3gHUAeYB3gHEAdcB4QH0Af4B0gG9AbUB5QHVAZgBnwGGAbkBwwG7AZsBogGpAcUB3wGzAdsBmQGlAcgByQHQAZ0BrAGaAZUBjgF4AasBpwGzAaQBtQHLAcoBsQGOAY0BrQG0AcYB1AHJAbQB1AHtAboB3gHoAcwBzwGyAdMBqAGoAa8BnQGHAZkBagGOAc8BoAG4AZsBqgGtAYUBkQGeAbwBsQGbAawBmwGsAZcBlgGdAZcBiAGLAcEBrwGSAYsBbQFgAaMBlgGVAY0BcQGcAbUBnAG3AaoBdwGtAbgBlAHCAaIBmAF7AbgB0QGTAZkBtwGhAZIBswG3AaQBmQGVAXEBbgGoAZEBgwGOAZQBfAFbAYoBiQGFAX4BdAGRAY0BlAGIAbQBmwGQAawBhAGWAYsBXwF9AagB5AGDAY4BiwGRAaoBmAFxAaABywHOAa0BvwGRAWUBhQF+AXsBfgGIAXoBewF6AY8BdgGwAagBdQFrAY4BigGHAZoBfQFqATsBVAGHAYIBgAF4AWMBagGeAYMBbQF7AWYBdAGCAVoBiAFhAXABcAFrAYsBXAGEAYUBjwGrAZIBqAGgAZwBkgGdAZkBigF1AaMBrgGjAY4BqgGKAV4BfgGuAZABlAFsAWgBfgFaAWwBYgFsAWQBZAGBAWQBawFZAX4BhAFgAX0BiwFnAVUBhwGkAZEBigGJAYMBLAF/AXgBcAF7AVcBYQFMAXsBYQFbAYwBTwFuAV0BSAFdAUcBXQE9ASYBbAFZAUcBMQE8ASMBbgGAAVwBagFYAWIBSQFbAWYBUAFMAT0BKQFQAVcBNwFTAUwBRAFTAWgBaAF6AVYBVgFcAUcBWQFaAVkBdQFmATEBNQFiAU0BRAFrAUMBagGKAY4BVAGCAY0BdQFwAWkBWwEzAWIBdAFlAVcBOwE2AV0BbwFoAW4BaAFAAS4BPAFZAVkBLgFDAS4BMQFcAVsBOwFmAV8BXwFRAUkBMQFCAU0BbQE0ATYBZQFTAVABFwEhAT0BDwFPATYBOgFTAToBRwErASsBSwEnAVIBYAFnAVUBQAFOAVUBTgE4AT8BKQExAU0BIwFYAVABVwFiAT8BPwEaAVEBWgFPAVABPgFIAToBCwEPATIBEgELATYBAAEkASoBLwFAAR8BBwHmAPwAHwEpATEBMQE0AfcAEQEfARQBGwEcATsBGgEiATABGgEaAR4BNwEkAR4BQQEsASUBSwFIAVoBOgFPAUsBRAE9AU8BUgEyAUQBNQFLAWABZAFKAWsBRgE3AVsBPwEsASwBPwEtAUYBcQE+ASwBUAE5AVABRQFMAQ8BDwEhASsBSAE9AVIBXQFhAUgBUQFnAUQBOQEgAUkBVAEmASIBJgE8AXUBMQFDASIBFwEeAS8BFwH7ABIB/QDnAA4BPQH5AB4BIAEEAQQBBAEVAQcBEgEkAQ4BIQEAAQMBIwEgAS4BAwE8ASABDgEVAfgAIgEfARgBEQEFASIBLQEQARABKQEXARcBBgEzASIBBQEBAf4AFgEkAR4BDAEoASEBJAFIATIBGQFDAVUBMgEZARUBAwFAASMB6gACAQ0BAgEiASMBBgEYAQkBBQEGAQEB8AAYAQkBCAE0AewADwEBAQgBCAEMARoB9gALAQABHgEoAScBDwELAc4AygAZARIBLgEoARUBEQH4AAcBMQEqAe0A/wAVARgB4gACAQYBCQHpAOwA9AD3ACUBEAEsAfMA8gAEATQBGgH+ACgB/AAEARIBKAE6ATkBPQEPAQYBEgEgASABGQE1ARwBDQEKAf8AGAEjAS4BKgFDAU4BHAEQAS0BFwEQARABLAEWAQwBEwETAR0B+QDlAAEB/AAhAToBDgFTATABPQE2AVMBOQEgARUBGQEcAQcB7gAKATkBIwEOAfgA8AA7AQYBKQEmARgBCQHpAOgAFwEMAd4A+QDoAP0ABQHzANYADAEIAfYA4ADnAOQABAH4AO8A7gAAAf0A9QD1APkA7QD0ABwB0QDOANsAEQHmAPsAEAHNAAIB+wD4AAIB3gDkANMA3QDzAM4AzADvAPMAywDnAPYA1gDuAOEA5wDZAOcAGQHxAAQBJwEZAbIAnAC4AM0AsQC0AJsAngC0AJAAqgDGALQAxQCzAOkA3wDXANsA1wDiAMUAzADXANQA4QDFAL4A6AC9AMsAyADAAK8A7wDWAMsA0gC9AL0A4ADOAMoA3ADTANwArgDRALUAvACxAKoA3wDVAOMA3ADGALgAygDNANgA0ADQAOEA9wDmAPEA1gC3AL0AwgDXAMwA8ADWAMwA1gC2AMgA2QDSANkAzADeAOEA9gDOALwA2ACuAMcAxwDuAP0A5wDgANwA7gD4ANQA9QDRANcA2wDYAPsA0ADbAOoAwgC7AN8AyQCaALYA3QCzAL0AswC9ANAAvgDTAMgAswDFAOEAxADDANYA5ADVAMcAqwCuAMsAxwDLAAABzgDgANQA2QAAAcMA2QDGALAAuAC0AOMA0QDQANQAtACXALAAqQC7AMUAtgC6ALYABQEFAbcAiQDBAOQA4gDXALMAtgDIAMsAwQCnAKcA9wD2ANoAxACuALYA1gDLANYAvACrAPUA9QDLANwA4wCmAKYAuAC5AMMA3AC/ANEAwgDKAOIAuwC+AMUAxgDbAJcArADTAOgA7QDWAMEAnACvAJYApACuAIcArwCqAMcAuQDWAMgAuACnAMoA5ACqAMcAzgDjAO0AtQC8ALgAsQC4AJQAkQClAKYAvAC/AIYAiQDNAMIAsQC0ALMAwgDCALAAsACIAJoApACEAJYAnQC2AJoAqACeAMEAugCyAJMApwDTAIMAkgC1AMsAoQBxAI4AaQCfALUA2QDnANUAsQCXAHgAmwCcAJEA0QCuAJgApwDUAK0AqgCuAMYAvACwAMYAygC/AMYA3gDQALsAvwC6ALoAqQCXAMwA3gDBAMEA2gC5ALoApADaANYAtgDBAKQAuQCyAMgAoQCcAKgAoACKAJ0ArwCDALIAtQC5AKIAmACRAHEAiQC0AK0AjQCjALEAnwCmAMoA2ACXAJMAogDGALQApQC0AKwAtwCpALQAqQCTAKUAdgCIAJ4AqQC6AKEAxQC2AKgAtgCdAKwAyQC9AK4AsQC2AJ0AwACcAKcAzgCRAMcApAC/AJwAnACxAJUApwC1AIkAgwCUAGUAUQBbAI0AcACCALAAnACBAH4AggCNAIIAlwB7AIQAnQCQAJMAlwCaAKIAhAB6AKEAxQCzAKUArwDFAK8AoQC2ALMAsACYAJ0AwAC7ANEAoACkANYAzACYAJUApgCjAJ8AfwCHAHcAdABdAGsAaABMAGMAVgBTAE0AVABLACkAGAAGAPj/EAAUAAQACAD+/+b/1f/k/9L/3//Y/3NtcGw8AAAAAAAAAAAAAACTWAAAPAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAJQsAAAAAAAAAAAAA',
		victoryAudio: 'data:audio/mpeg;base64,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',
	};
	const winningScore = 5;

	let arenaTopHeight = 0;
	let arenaBottomHeight = 600;
	let arenaWidth = 900;
	let paddleHeight = 85;
	let paddleWidth = 12;
	let ballRadius = 15;
	let speedOfPaddle1 = 0;
	let positionOfPaddle1 = (arenaBottomHeight / 2 - paddleHeight / 2);
	let speedOfPaddle2 = 0;
	let positionOfPaddle2 = (arenaBottomHeight / 2 - paddleHeight / 2);
	let topPositionOfBall;
	let leftPositionOfBall;
	let topSpeedOfBall = 0;
	let leftSpeedOfBall = 0;
	let speedConstant = 10;
	let zeroSpeed = 0;
	let score1 = Number(window.localStorage.getItem('score1')) || 0;
	let score2 = Number(window.localStorage.getItem('score2')) || 0;
	let side;
	let scoreAudio = new Audio(AUDIOS.scoreAudio);
	let wallBounceAudio = new Audio(AUDIOS.wallBounceAudio);
	let paddleBounceAudio = new Audio(AUDIOS.paddleBounceAudio);
	let victoryAudio = new Audio(AUDIOS.victoryAudio);
	let newInterval;

	const startBall = () => {
		topPositionOfBall = (arenaBottomHeight / 2 - (ballRadius / 2));
		leftPositionOfBall = (arenaWidth / 2 - (ballRadius / 2));
		randomizeStartingSide();
		topSpeedOfBall = speedConstant;
		leftSpeedOfBall = side * speedConstant;
	};

	const randomizeStartingSide = () => {
		(Math.random() < 0.5) ? side = 1 : side = -1;
	};

	document.addEventListener('keydown', (event) => {
		if (event.key === 'w' || event.keyCode === 87) {
			speedOfPaddle1 = -speedConstant;
		}
		if (event.key === 's' || event.keyCode === 83) {
			speedOfPaddle1 = speedConstant;
		}
		if (event.key === 'ArrowUp' || event.keyCode === 38) {
			speedOfPaddle2 = -speedConstant;
		}
		if (event.key === 'ArrowDown' || event.keyCode === 40) {
			speedOfPaddle2 = speedConstant;
		}
		if (event.key === 'r' || event.keyCode === 82) {
			location.reload();
		}
		if (event.key === 'c' || event.keyCode === 67) {
			autoPlayOne();
		}
		if (event.key === 'v' || event.keyCode === 86) {
			autoPlayTwo();
		}

	}, false);

	document.addEventListener('keyup', (event) => {
		if (event.key === 'w' || event.keyCode === 87) {
			speedOfPaddle1 = zeroSpeed;
		}
		if (event.key === 's' || event.keyCode === 83) {
			speedOfPaddle1 = zeroSpeed;
		}
		if (event.key === 'ArrowUp' || event.keyCode === 38) {
			speedOfPaddle2 = zeroSpeed;
		}
		if (event.key === 'ArrowDown' || event.keyCode === 40) {
			speedOfPaddle2 = zeroSpeed;
		}
	}, false);

	const intervalCallBack = () => {
		positionOfPaddle1 += speedOfPaddle1;
		positionOfPaddle2 += speedOfPaddle2;
		topPositionOfBall += topSpeedOfBall;
		leftPositionOfBall += leftSpeedOfBall;

		if (positionOfPaddle1 <= arenaTopHeight) {
			positionOfPaddle1 = arenaTopHeight;
		}
		if (positionOfPaddle2 <= arenaTopHeight) {
			positionOfPaddle2 = arenaTopHeight;
		}
		if (positionOfPaddle1 >= arenaBottomHeight - paddleHeight) {
			positionOfPaddle1 = arenaBottomHeight - paddleHeight;
		}
		if (positionOfPaddle2 > arenaBottomHeight - paddleHeight) {
			positionOfPaddle2 = arenaBottomHeight - paddleHeight;
		}
		if (topPositionOfBall <= arenaTopHeight + ballRadius || topPositionOfBall >= arenaBottomHeight - ballRadius) {
			topSpeedOfBall = -topSpeedOfBall;
			wallBounceAudio.play().then(audio => audio);
		}

		if (leftPositionOfBall <= paddleWidth + ballRadius) {
			if (topPositionOfBall >= positionOfPaddle1 && topPositionOfBall <= positionOfPaddle1 + paddleHeight) {
				leftSpeedOfBall = -leftSpeedOfBall;
				paddleBounceAudio.play().then(audio => audio);
			} else {
				score2++;
				endGameSettings('score2');
			}
		}

		if (leftPositionOfBall >= arenaWidth - ballRadius - paddleWidth) {
			if (topPositionOfBall >= positionOfPaddle2 && topPositionOfBall <= positionOfPaddle2 + paddleHeight) {
				leftSpeedOfBall = -leftSpeedOfBall;
				paddleBounceAudio.play().then(audio => audio);
			} else {
				score1++;
				endGameSettings('score1');
			}
		}

		document.getElementById('paddle1').style.top = (positionOfPaddle1) + 'px';
		document.getElementById('paddle2').style.top = (positionOfPaddle2) + 'px';
		document.getElementById('ball').style.top = (topPositionOfBall) + 'px';

		document.getElementById('ball').style.left = (leftPositionOfBall) + 'px';

		document.getElementById('score1').innerHTML = score1.toString();
		document.getElementById('score2').innerHTML = score2.toString();
	};

	const positionUpdateInterval = setInterval(intervalCallBack, 50);

	const endGameSettings = (score) => {
		window.localStorage.setItem(score, score === 'score2' ? score2.toString() : score1.toString());
		positionOfPaddle1 = (arenaBottomHeight / 2 - paddleHeight / 2);
		positionOfPaddle2 = (arenaBottomHeight / 2 - paddleHeight / 2);
		scoreAudio.play().then(audio => audio);
		startBall();
		victoryChecker();
	}

	const victoryChecker = () => {
		if (score1 === winningScore || score2 === winningScore) {
			victoryAudio.play().then(audio => audio);
			clearInterval(positionUpdateInterval);
			endGame();
		}
	};

	const autoPlayOne = () => {
		setInterval(() => {
			positionOfPaddle1 = topPositionOfBall - paddleHeight / 2;
		}, 25);
	};
	const autoPlayTwo = () => {
		setInterval(() => {
			positionOfPaddle2 = topPositionOfBall - paddleHeight / 2;
		}, 25);
	};

	const startGame = () => {
		continueGame();

		const endGameContainer = document.getElementById('endGameContainer');
		const modal = document.getElementById('modal');

		endGameContainer.classList.add('hide');

		const gameStartCallback = (event) => {
			if (event.key === 'enter' || event.keyCode === 13) {
				modal.classList.add('hide');

				startBall();

				document.removeEventListener('keyup', gameStartCallback);
			}
		};

		document.addEventListener('keyup', gameStartCallback);

	};

	const endGame = () => {
		const endGameContainer = document.getElementById('endGameContainer');
		const endGameContainerParagraph = document.querySelector('.end-game-container p');
		const modal = document.getElementById('modal');
		const startGameContainer = document.getElementById('startGameContainer');
		const restartBtn = document.getElementById('restart');

		modal.classList.remove('hide');
		endGameContainer.classList.remove('hide');
		startGameContainer.classList.add('hide');

		clearInterval(newInterval);

		endGameContainerParagraph.textContent = `${score1 === winningScore ? 'Player 1' : 'Player 2'} wins!`;

		score1 = 0;
		score2 = 0;
		window.localStorage.setItem('score1', score1.toString());
		window.localStorage.setItem('score2', score2.toString());

		restartBtn.addEventListener('click', () => {
			modal.classList.add('hide');

			clearInterval(newInterval);

			newInterval = setInterval(intervalCallBack, 50);

			startBall();
		});
	};

	const continueGame = () => {
		const startingMessage = document.querySelector('.start-game-container p');
		const isSavedToLocalStorage = (Number(window.localStorage.getItem('score1')) !== 0) || (Number(window.localStorage.getItem('score2')) !== 0);
		const endInfo = (type) => {
			return `Press <strong>'Enter'</strong> to ${type} the game.`
		};

		if (isSavedToLocalStorage) {
			startingMessage.innerHTML = endInfo('continue');
		} else {
			startingMessage.innerHTML = endInfo('start');
		}
	};

	startGame();

</script>
</body>

</html>
